﻿;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; FORTIFICATION SCRIPT (Handle AI Planning)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; USAGE:
;
; Basic structure of an AI planning event:
; { 
; #NAME= Event name (this will be shown as a selectable event under an OPTIONS screen within the game)
; #POPUP= Event popup text (this will be displayed when the event occurs)
; #FLAG= Will this be a default event for the campaign? (values range [0, 1]; True= 1; False= 0)
; #TYPE= Values range [0, 3];
;        With all other fields satisfied will this be:
;        0 = Single check regardless if #TRIGGER is satisfied
;        1 = Multiple check until #TRIGGER is satisfied
;        2 = Reoccuring check until end of game
;                       OR
;        Once the #DATE field is satisfied:
;        3 = Event fires once if all other fields are satisfied, else it will not fire.  Either way, event will be removed never to be looked at again
; #LEVEL= What minimum skill level, as selected from the AI difficulty level screen in game, with this event apply to?
;         Values: [0, 4]; Green= 0; Novice= 1; Intermediate= 2; Veteran= 3; Expert= 4
; #GV= Does the event activate based on the Global Variable values assigned?
;      Ten random Global Variables are assigned at the start of the campaign each with a value between [1,100]
;      Format: GV [min, max]; GV range [1,10]; min range [1,100]; max range [1,100]
;      Example A) #GV= 1[1,100] will always trigger because Global Variable #1 will always have a value between [1,100]
;      Example B) #GV= 4[71,100] will trigger 30% per game
; #LINK= Does the event activate based on the Link values assigned?
;        A campaign can have up to 1100 Decision events and is referenced by other events via this parameter
;        Format: decision[flag]; flag range [0, 1]; True= 1; False= 0
;        Example A) #LINK= 0[0] will always trigger as formal DECISION events can only be from 1-1100
;        Example B) #LINK= 1[0] will trigger whenever #DECISION= 1 is not accepted
;        Example C) #LINK= 3[1] will trigger whenever #DECISION= 3 is accepted
; #TRIGGER= Trigger percentage that the event will occur (values range [0, 100])
; #COUNTRY_ID= Country ID associated with this event
; #EDGE= What type of fortification edge should this event have? (See EDGE IDS below)
; #GOAL_POSITION= What is the map position that is the objective of this plan?
; #DATE= Date that must be satisfied (in game) for event to occur (format yyyy/mm/dd)
; #FRIENDLY_POSITION= Positions that must be under friendly control in order for event to occur
; #VARIABLE_CONDITION= Under what variable conditions will this event occur
;                      Format: country_id [political_alignment] [min_activation%] [surrendered_flag]
; #TACTICAL_CONDITION= Tactical map position (resource) that currently MUST NOT be threatened for event to
;                      occur, i.e. plan owner should have tactical advantage over this position
;                      Format: x,y [tactical_flag]
; #ACTIVATE_POSITION= Condition positions that will serve to ACTIVATE the event.
;                     Looks at distance as well as a selected number of Axis/Allied units as specified by 'alignment' flag
;                     Format: x,y [min_range, max_range] [min_units, max_units] [alignment]
; #CANCEL_POSITION= Condition positions that will serve to CANCEL the event.
;                   Looks at distance as well as a selected number of Axis/Allied units as specified by 'alignment' flag
;                   Format: x,y [min_range, max_range] [min_units, max_units] [alignment]
; }
;
; NOTES:
;
; Each event must be preceded by a '{' and end with a '}'
;
; Plan identity is determined by #COUNTRY_ID and #GOAL_POSITION.  A country can only have a
; single plan based on this criteria and will be assigned the first valid plan regardless of duplicate
; script entries (even if the remaining control '#' values are different).  
; Note:  This will also allow you to set up a variety of plans with the same identity but different 
; control '#' parameters where the first 'event' satisfied will be the fist plan assigned (for added variability).
;
; FORTIFICATION - FORTIFICATION plans are only cancelled either by #CANCEL_POSITION failure or the engineer has been
; forced to retreat.  If the #GOAL_POSITION already has a fortified tile the plan will be skipped.
;
; #GOAL_POSITION - Any land tile
;
; #FRIENDLY_POSITION - First position must refer to a land tile, subsequent positions can refer to either land or coastal tiles.
; Note:  More than one #FRIENDLY_POSITION can be set.  #FRIENDLY_POSITION refers to the current side associated with this 
;        plan.  Each #FRIENDLY_POSITION will be read using AND logic.
;
;        For all AI scripts that use the #FRIENDLY_POSITION field, the AI picks available units closest to and connected to
;        the first #FRIENDLY_POSITION, within #RANGE, and then sends them to the nearest available position for the script; 
;        e.g., a city for a GUARD script, a port for a TRANSPORT script, etc.  All AI scripts require that the first 
;        #FRIENDLY_POSITION be a land tile, with the exception of Fleet scripts.
;
; #VARIABLE_CONDITION - More than one #VARIABLE_CONDITION can be set.  Under #VARIABLE_CONDITION you can also list 
; countries that have not yet fully entered the war.  For example by listing an activation % less than 100% you
; are providing a check where the #VARIABLE_CONDITION country must meet a minimum activation % (but is
; not yet at 100%) in order for the event to occur.  To check for a fully activated country simply
; list the activation % at 100%.  Each #VARIABLE_CONDITION line will be read using AND logic.
;
; More than one #TACTICAL_CONDITION can be set.  #TACTICAL_CONDITION refers to the current side, i.e.
; country associated with this plan having tactical superiority over the specified map position.
; Tactical superiority can be fine tuned via the TACTICAL_ID flag.  Each #TACTICAL_CONDITION line will
; be read using AND logic.
; Note:  TACTICAL_ID= SEA implies that the port or city in question has an adjacent enemy unit in order for it
;        to be threatened.  For example a land locked city can never be threated by SEA so this can be used as a
;        dummy position.
;
; More than one #ACTIVATE_POSITION can be set.  Distance or range checks will be based on the
; specified x,y position.  For example if the x,y position is a coastal tile then range checks will
; be made on sea tiles, otherwise if it is a land tile range checks will be made on land tiles only.
; Each #ACTIVATE_POSITION line will be read using OR logic.
; Note: Once a plan has been properly activated then all references to #ACTIAVATE_POSITION are removed
;       from the plan as these conditions have been satisfied.  Use #CANCEL_POSITION to set the CANCEL conditions
;       based on unit positions for the event.
;
; More than one #CANCEL_POSITION can be set.  Distance or range checks will be based on the
; specified x,y position.  For example if the x,y position is a coastal tile then range checks will
; be made on sea tiles, otherwise if it is a land tile range checks will be made on land tiles only.
; Each #CANCEL_POSITION line will be read using OR logic.
;
; Use the reference values provided for #COUNTRY_ID and not the country names
; Use the reference values provided for TACTICAL_ID and not tactical names
; Use the reference values provided for POLITICAL ALIGNMENT and not names
; Use the reference values provided for SURRENDER flags and not names
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; COUNTRY ID REFERENCE VALUES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; #SEA= Sea
; #NEUTRAL= Neutral
; #COUNTRY_ID_3= Albania
; #COUNTRY_ID_4= Algeria
; #COUNTRY_ID_8= Baltic States
; #COUNTRY_ID_10= Belgium
; #COUNTRY_ID_19= Bulgaria
; #COUNTRY_ID_21= Canada
; #COUNTRY_ID_31= Denmark
; #COUNTRY_ID_36= Egypt
; #COUNTRY_ID_39= Finland
; #COUNTRY_ID_40= France
; #COUNTRY_ID_45= Germany
; #COUNTRY_ID_46= Greece
; #COUNTRY_ID_52= Hungary
; #COUNTRY_ID_56= Iraq
; #COUNTRY_ID_57= Ireland
; #COUNTRY_ID_59= Italy
; #COUNTRY_ID_63= Libya
; #COUNTRY_ID_65= Luxembourg
; #COUNTRY_ID_70= Morocco
; #COUNTRY_ID_73= Netherlands
; #COUNTRY_ID_78= Norway
; #COUNTRY_ID_79= Palestine
; #COUNTRY_ID_82= Persia
; #COUNTRY_ID_85= Poland
; #COUNTRY_ID_87= Portugal
; #COUNTRY_ID_93= Romania
; #COUNTRY_ID_95= Saudi Arabia
; #COUNTRY_ID_99= Spain
; #COUNTRY_ID_103= Sweden
; #COUNTRY_ID_105= Syria
; #COUNTRY_ID_109= Trans-Jordan
; #COUNTRY_ID_110= Tunisia
; #COUNTRY_ID_111= Turkey
; #COUNTRY_ID_112= Britain
; #COUNTRY_ID_115= United States
; #COUNTRY_ID_116= Russia
; #COUNTRY_ID_118= Vichy France
; #COUNTRY_ID_120= Yugoslavia
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LEVEL REFERENCE VALUES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; GREEN= 0
; NOVICE= 1
; BEGINNER= 2
; INTERMEDIATE= 3
; ADVANCED= 4
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; EDGE REFERENCE VALUES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; North= 0
; North_East= 1
; East= 2
; South_East= 3
; South= 4
; South_West= 5
; West= 6
; North_West= 7

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; TACTICAL ID REFERENCE VALUES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; ANY= 0
; LAND= 1
; AIR= 2
; NAVAL= 3
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; POLITICAL ALIGNMENT REFERENCE VALUES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; NEUTRAL= 0
; AXIS= 1
; ALLIED= 2
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SURRENDERED FLAG REFERENCE VALUES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
; NOT_SURRENDERED= 0
; SURRENDERED= 1
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

